package cn.jbolt.ai.klb.service;

import com.baomidou.mybatisplus.extension.service.IService;
import cn.jbolt.ai.klb.entity.AiDoc;
import cn.jbolt.util.Result;

import java.util.List;

public interface AiDocService extends IService<AiDoc> {

    /**
     * 根据ID获取文档信息
     *
     * @param id 文档ID
     * @return 文档信息
     */
    Result getDocById(Long id);

    /**
     * 获取所有文档信息
     *
     * @param page              分页页码
     * @param pageSize          分页大小
     * @param keywords           关键词
     * @param aiKnowledgeBaseId 知识库ID
     * @param dataType          数据类型
     * @param status            训练状态
     * @return 文档列表
     */
    Result listByPage(Integer page, Integer pageSize, String keywords, Long aiKnowledgeBaseId, String dataType,
                   Integer status);

    /**
     * 添加新的文档
     *
     * @param doc 新的文档对象
     * @return 是否添加成功
     */
    Result add(AiDoc doc);



    /**
     * 更新文档信息
     *
     * @param doc 需要更新的文档对象
     * @return 是否更新成功
     */
    Result update(AiDoc doc);

    /**
     * 删除文档
     *
     * @param id 文档ID
     * @return 是否删除成功
     */
    Result delete(Long id);



    /**
     * 获取数据类型的下拉选列表
     * @return
     */
    Result getDataTypeList();


    /**
     * 根据知识库id移除DOC
     *
     * @return
     */
     Result delDocByKlbId(Long klbId);

    /**
     * 根据file_id移除DOC
     *
     * @return
     */
    Result delDocByFileId(Long fileId);

    /**
     * 向量化doc
     * @param aiDoc
     * @param text
     * @param vdbResourceId
     * @param knowledgeBaseId
     * @return
     */
     void embeddingDoc(AiDoc aiDoc, String text, String vdbResourceId, Long knowledgeBaseId);

    /**
     * 根据doc的id集合获取docList
     * @param ids
     * @return
     */
      List<AiDoc> getDocListByIds(List<String> ids);

    /**
     * 根据单个doc生成问题并保存
     * @param doc
     * @return
     */
    Result addQuestionByDocId(AiDoc doc);

    /**
     * 获取当前片段所生的问题列表
     * @param
     * @param
     * @return
     */
    Result getQuestionListByLinkId(Long docId);

    /**
     * 用大模型根据内容生成问题
     * @param modelSn
     * @param content
     * @return
     */
    Result generateQuestionByModel(String modelSn, String content, AiDoc doc);

    /**
     * 根据fileId获取训练完成Normal的docList
     * @param fileId
     * @return
     */
    Result getNormalDocListByFileId(Long fileId);

    /**
     * 根据fileId获取训练完成QA的docList
     * @param fileId
     * @return
     */
    Result<List<AiDoc>> getQADocListByFileId(Long fileId);
}
